export interface IEvents {
	[event: string]: string;
}

export interface IActions {
	[atom: string]: (...args: any[]) => Promise<unknown> | unknown;
}

export interface IHandle {
	destroy(this: IHandle): void;
}

export interface IFeidaoAiBrowserComponent {
	readonly data: {
		readonly [attr: string]: any;
		readonly no: string;
		readonly node: HTMLElement;
		readonly params: { [key: string]: any; };
		readonly url: string;
	};
	parse_event(node: HTMLElement | DocumentFragment): IHandle[];
	fire(action: string, ...args: any[]): Promise<any>;
	emit(event: string, ...args: any[]): Promise<any>;
}

export interface IFeidaoAiBrowserPage {
	readonly data: {
		readonly [attr: string]: any;
		readonly params: { [key: string]: any; };
		readonly url: string;
	};
	fire(action: string, ...args: any[]): Promise<any>;
	emit(event: string, ...args: any[]): Promise<any>;
}
